Modern firms use complex business systems to define and perform the business processes used by the firms. The business system typically includes a variety of backend applications to perform related tasks and define related processes, such as inventory management, employee management, customer relations, etc. Each application makes use of a variety of business objects, which contain data and business logic to manipulate the data.
Typically, the user interface used to access these backend applications does not include any business or functional logic itself. Rather, the backend applications provide functions and services to the user interface, which provides communication between a user and the applications using the services provided by the applications. Thus, the functionality presented by the user interface is limited by the services exposed by the backend applications.
In many cases the user interface may be created by a different entity than the backend applications. For example, a customer might purchase a generic business system from a supplier, then create (or have created by a second supplier) a customized user interface. Creating the client (frontend) interface may be problematic for a variety of reasons. Often, it requires creating large amounts of functionality to interface with various data sources in the business system. Since each business object and/or backend application might have a different interface, this can require large amounts of time and work. Similarly, data received from various data sources in the business system may have different formatting and structure. To present a consistent user interface, client applications may have to harmonize data received from these disparate sources.
Since user interfaces may result in additions, deletions, and/or modifications to stored data, allowing arbitrary access to user interfaces may be problematic for the security and data integrity of the backend. Various access mechanisms are used to maintain security and data integrity. For example, client proxies may provide services that let user interfaces modify data stored in the backend.
However, conventional approaches can have several problems. Typically, data modification calls made by the user interface must be coordinated by the user interface. Since one data change can require multiple updates to maintain data integrity, multiple data calls may be needed. Thus, large amounts of code are typically written for each modification, and a high amount of network traffic may be generated by data updates.
Client proxies also typically have a fixed level of granularity for data modifications. That is, a client has no way to define the granularity of modifications to data stored by the backend. This can also result in increased network traffic between the client and the backend.
Thus there is a need in the art for a uniform, flexible way to modify the data stored in and services provided by business objects.